export default {
  auth: {
    noAuthKeyFound: "No authentication found, cannot export",
  },
  common: {
    operationSuccess: "Operation successful",
    submit: "Submit",
    cancel: "Cancel",
    confirm: "Confirm",
    delete: "Delete",
    deleteShort: "×",
    edit: "Edit",
    save: "Save",
    reset: "Reset",
    search: "Search",
    loading: "Loading...",
    success: "Success",
    error: "Error",
    warning: "Warning",
    requestFailed: "Request failed: {status}",
    networkError: "Network error, please check your connection",
    requestSetupError: "Request setup error",
    info: "Info",
    yes: "Yes",
    no: "No",
    ok: "OK",
    close: "Close",
    back: "Back",
    export: "Export",
    import: "Import",
    refresh: "Refresh",
    add: "Add",
    create: "Create",
    update: "Update",
    view: "View",
    detail: "Detail",
    more: "More",
    less: "Less",
    all: "All",
    none: "None",
    select: "Select",
    selected: "Selected",
    operation: "Operation",
    actions: "Actions",
    status: "Status",
    enable: "Enable",
    disable: "Disable",
    copy: "Copy",
    copied: "Copied",
    download: "Download",
    upload: "Upload",
    description: "Description",
    language: "Language",
    previousPage: "Previous",
    nextPage: "Next",
    startTime: "Start Time",
    endTime: "End Time",
    selectAll: "Select All",
    deselectAll: "Deselect All",
  },
  login: {
    title: "GPT Load",
    subtitle: "Intelligent Load Balancing Platform",
    welcome: "Welcome Back",
    welcomeDesc: "Please enter your auth key to continue",
    authKey: "Auth Key",
    authKeyPlaceholder: "Enter auth key",
    loginButton: "Login",
    loginSuccess: "Login successful",
    authKeyRequired: "Please enter auth key",
  },
  nav: {
    dashboard: "Dashboard",
    keys: "Keys",
    logs: "Logs",
    settings: "Settings",
    logout: "Logout",
  },
  dashboard: {
    title: "Dashboard",
    overview: "Overview",
    statistics: "Statistics",
    keyStatistics: "Key Statistics",
    totalKeys: "Total Keys",
    activeKeys: "Active Keys",
    inactiveKeys: "Inactive Keys",
    blacklistedKeys: "Blacklisted Keys",
    rpm10Min: "10-Min RPM",
    requests24h: "24h Requests",
    errorRate24h: "24h Error Rate",
    requestStatistics: "Request Statistics",
    totalRequests: "Total Requests",
    successRequests: "Success Requests",
    failedRequests: "Failed Requests",
    todayRequests: "Today Requests",
    requestTrend: "Request Trend",
    last7Days: "Last 7 Days",
    last30Days: "Last 30 Days",
    systemStatus: "System Status",
    running: "Running",
    stopped: "Stopped",
    healthy: "Healthy",
    unhealthy: "Unhealthy",
    cpuUsage: "CPU Usage",
    memoryUsage: "Memory Usage",
    diskUsage: "Disk Usage",
    uptime: "Uptime",
  },
  keys: {
    title: "Key Management",
    groupManagement: "Group Management",
    keyManagement: "Key Management",
    createGroup: "Create Group",
    createAggregateGroup: "Create Aggregate Group",
    editAggregateGroup: "Edit Aggregate Group",
    aggregateGroup: "Aggregate",
    standardGroup: "Standard Group",
    subGroups: "Sub Groups",
    subGroup: "Sub Group",
    subGroupsConfig: "Sub Groups Configuration",
    selectSubGroup: "Select Sub Group",
    addSubGroup: "Add Sub Group",
    atLeastOneSubGroup: "At least one sub group is required",
    noAvailableSubGroups: "No available sub groups, please create standard groups first",
    noMoreAvailableSubGroups: "No more available sub groups",
    allSubGroupsSelected: "All available sub groups have been selected",
    selectChannelTypeFirst: "Please select channel type first",
    channelTypeChanged: "Channel type changed, sub groups configuration has been cleared",
    duplicateSubGroup: "Cannot select the same sub group twice",
    weightZeroTip: "Weight 0 means temporarily disabled",
    disabled: "Disabled",
    groupNamePlaceholder: "e.g., openai-pool",
    displayNamePlaceholder: "e.g., OpenAI Aggregate Pool",
    descriptionPlaceholder: "Enter group description...",
    aggregateProxyKeysTooltip:
      "Proxy keys for aggregate group, leave empty to use global proxy keys",
    subGroupTooltip:
      "Shows available standard groups based on selected channel type, weights determine traffic distribution ratio",
    editGroup: "Edit Group",
    deleteGroup: "Delete Group",
    confirmDeleteGroup: "Are you sure to delete group {name}?",
    dangerousOperation: "This is a dangerous operation that will delete group ",
    toConfirmDeletion: " and all its keys. Please enter the group name to confirm:",
    confirmDelete: "Confirm Delete",
    copyGroup: "Copy Group",
    groupName: "Group Name",
    groupDescription: "Group Description",
    groupEndpoint: "Group Endpoint",
    proxyKeys: "Proxy Keys",
    createKey: "Create Key",
    editKey: "Edit Key",
    deleteKey: "Delete Key",
    keyValue: "Key Value",
    keyStatus: "Key Status",
    keyChannel: "Channel Type",
    checkStatus: "Check Status",
    checkNow: "Check Now",
    checkAll: "Check All",
    lastCheckTime: "Last Check Time",
    usageCount: "Usage Count",
    errorCount: "Error Count",
    blacklistCount: "Blacklist Count",
    valid: "Valid",
    invalid: "Invalid",
    checking: "Checking",
    unchecked: "Unchecked",
    addToBlacklist: "Add to Blacklist",
    removeFromBlacklist: "Remove from Blacklist",
    batchOperation: "Batch Operation",
    batchDelete: "Batch Delete",
    batchEnable: "Batch Enable",
    batchDisable: "Batch Disable",
    importKeys: "Import Keys",
    exportKeys: "Export Keys",
    keyFormat: "Key Format",
    onePerLine: "One per line",
    separated: "Separator separated",
    keyPlaceholder: "Enter keys, one per line",
    noGroups: "No groups",
    noKeys: "No keys",
    createFirstGroup: "Create your first group",
    createFirstKey: "Add your first key",
    searchGroupPlaceholder: "Search group name...",
    noMatchingGroups: "No matching groups found",
    addKey: "Add Key",
    exportAllKeys: "Export All Keys",
    exportValidKeys: "Export Valid Keys",
    exportInvalidKeys: "Export Invalid Keys",
    restoreAllInvalidKeys: "Restore All Invalid Keys",
    clearAllInvalidKeys: "Clear All Invalid Keys",
    clearAllKeys: "Clear All Keys",
    validateAllKeys: "Validate All Keys",
    validateValidKeys: "Validate Valid Keys",
    validateInvalidKeys: "Validate Invalid Keys",
    keyCopied: "Key copied to clipboard",
    copyFailed: "Copy failed",
    testingKey: "Testing key...",
    testSuccess: "Key test successful (Duration: {duration})",
    testFailed: "Key test failed: Invalid API key",
    restoreKey: "Restore Key",
    confirmRestoreKey: 'Are you sure to restore key "{key}"?',
    confirmDeleteKey: 'Are you sure to delete key "{key}"?',
    restoreSuccess: "Restore successful",
    validatingKeys: "Validating {type} keys...",
    clearKeys: "Clear Keys",
    confirmClearInvalidKeys:
      "Are you sure to clear all invalid keys? This operation cannot be undone!",
    confirmClearAllKeys:
      "This will permanently delete all keys in this group and cannot be undone! Are you sure to continue?",
    clearSuccess: "Clear successful",
    selectGroup: "Please select a group",
    clickToCopy: "Click to copy",
    urlCopied: "URL copied to clipboard",
    keyCount: "Key Count",
    activeKeyCount: "Active Keys",
    invalidKeyCount: "Invalid Keys",
    stats24Hour: "24h Requests",
    stats24HourFailed: "24h Failed Requests",
    stats24HourFailureRate: "24h Failure Rate",
    stats7Day: "7d Requests",
    stats7DayFailed: "7d Failed Requests",
    stats7DayFailureRate: "7d Failure Rate",
    stats30Day: "30d Requests",
    stats30DayFailed: "30d Failed Requests",
    stats30DayFailureRate: "30d Failure Rate",
    detailInfo: "Detailed Information",
    basicInfo: "Basic Information",
    displayName: "Display Name",
    channelType: "Channel Type",
    sortOrder: "Sort Order",
    testModel: "Test Model",
    testPath: "Test Path",
    hideKeys: "Hide Keys",
    showKeys: "Show Keys",
    copyKeys: "Copy Keys",
    generate: "Generate",
    confirmGenerate: "Confirm Generate",
    generateProxyKeys: "Generate Proxy Keys",
    enterKeysCount: "Enter number of keys to generate",
    enterCountPlaceholder: "Enter count",
    generatedKeysWillAppend: "Generated keys will be appended to existing key list",
    keysGeneratedSuccess: "Successfully generated {count} keys",
    noKeysToCopy: "No keys to copy",
    keysCopiedToClipboard: "Keys copied to clipboard",
    copyFailedManual: "Copy failed, please copy manually",
    sourceGroupNotExist: "Source group does not exist",
    noSubGroups: "No sub groups",
    activeSubGroups: "Active Sub Groups",
    disabledSubGroups: "Disabled Sub Groups",
    unavailableSubGroups: "Unavailable Sub Groups",
    editWeight: "Edit Weight",
    deleteSubGroup: "Delete Sub Group",
    confirmDeleteSubGroup: 'Are you sure to delete sub group "{name}"?',
    deleteSubGroupSuccess: "Sub group deleted successfully",
    deleteSubGroupFailed: "Failed to delete sub group",
    loadSubGroupsFailed: "Failed to load sub groups",
    updateWeightSuccess: "Weight updated successfully",
    enterWeight: "Please enter weight",
    weightCannotBeNegative: "Weight cannot be negative",
    weightMaxExceeded: "Weight cannot exceed 1000",
    newWeight: "New Weight",
    currentWeight: "Current Weight",
    previewPercentage: "Preview Percentage",
    weightPreviewNote:
      "This is a preview percentage, assuming other sub group weights remain unchanged",
    selectSubGroups: "Select Sub Groups",
    addMoreSubGroup: "Add More Sub Groups",
    noMoreAvailableGroups: "No more available groups",
    editingSubGroup: "Editing Sub Group",
    groupId: "Group ID",
    copyGroupSuccess: 'Copy successful! Created new group "{groupName}"',
    copyGroupWithKeysSuccess:
      'Copy successful! Created new group "{groupName}", keys are being imported in background, please check progress later',
    copyGroupTitle: "Copy Group - {groupName}",
    newGroupNameLabel: "New group name:",
    keyHandling: "Key Handling",
    copyAllKeys: "Copy all keys",
    copyValidKeysOnly: "Copy valid keys only",
    dontCopyKeys: "Don't copy keys",
    confirmCopy: "Confirm Copy",
    upstreamAddresses: "Upstream Addresses",
    upstream: "Upstream",
    weight: "Weight",
    advancedConfig: "Advanced Configuration",
    aggregateReferences: "Aggregate References",
    groupInfo: "Group Info",
    viewGroupInfo: "View Group Info",
    configKey: "Config Key",
    noDescription: "No description",
    customHeaders: "Custom Headers",
    emptyValue: "(empty)",
    paramOverrides: "Parameter Overrides",
    enterModelName: "Enter model name",
    enterUpstreamUrl: "Enter upstream URL",
    enterValidationPath: "Enter validation endpoint path",
    enterGroupName: "Please enter group name",
    groupNamePattern: "Only lowercase letters, numbers, hyphens or underscores, 1-100 characters",
    selectChannelType: "Please select channel type",
    enterTestModel: "Please enter test model",
    atLeastOneUpstream: "At least one upstream address is required",
    invalidJsonFormat: "Parameter override must be valid JSON format",
    groupNameTooltip:
      "Used as part of API routing, only lowercase letters, numbers, hyphens or underscores, 1-100 characters. E.g.: gemini, openai-2",
    displayNameTooltip:
      "Friendly name displayed in the UI, can contain Chinese and special characters. If not filled, group name will be used as display name",
    channelTypeTooltip:
      "Select API provider type, determines request format and authentication method. Supports major AI providers like OpenAI, Gemini, Anthropic",
    sortOrderTooltip:
      "Determines display order in the list, smaller numbers appear first. Recommend using intervals like 10, 20, 30 for easy adjustment",
    sortValue: "Sort value",
    testModelTooltip:
      "Model name for validating API key availability. System will use this model to send test requests to check if the key is working. Please use lightweight and fast models",
    testPathTooltip1:
      "Custom API endpoint path for key validation. Default path will be used if not specified",
    testPathTooltip2: "If using non-standard path, please enter complete API path here",
    optionalCustomValidationPath: "Optional, custom API path for key validation",
    proxyKeysTooltip:
      "Group-specific proxy keys for accessing this group's proxy endpoint. Separate multiple keys with commas.",
    proxyKeysCopied: "Proxy keys copied to clipboard",
    multiKeysPlaceholder: "Separate multiple keys with commas",
    descriptionTooltip:
      "Detailed description of the group to help team members understand its purpose and features. Supports multi-line text",
    upstreamTooltip:
      "Complete URL of the API server. Multiple upstreams enable load balancing and failover for high availability",
    weightTooltip:
      "Load balancing weight configuration. Weight determines traffic distribution ratio - higher values receive more traffic. Weight 0 disables the upstream (no requests). Example: Weight 2:1 means the first receives ~67% of traffic",
    addUpstream: "Add Upstream",
    groupConfig: "Group Configuration",
    groupConfigTooltip:
      "Group-specific configuration parameters like timeout, retry count, etc. These settings override global defaults",
    config: "Config",
    configTooltip:
      "Select parameter type to configure, then set the value. Different parameters have different purposes and value ranges",
    selectConfigParam: "Select configuration parameter",
    paramValue: "Parameter value",
    setConfigValue: "Set config value",
    addConfigParam: "Add Config Parameter",
    headerRulesTooltip1:
      "Add, override or remove HTTP headers before forwarding proxy requests to upstream services.",
    supportedVariables: "Supported variables",
    clientIpVar: "Client IP address",
    groupNameVar: "Group name",
    apiKeyVar: "Current API key",
    timestampMsVar: "Milliseconds timestamp",
    timestampSVar: "Seconds timestamp",
    header: "Header",
    headerTooltip:
      "Configure HTTP header name, value and operation type. Remove operation will delete the specified header",
    headerName: "Header name",
    duplicateHeader: "Duplicate header name",
    headerValuePlaceholder: "Supports variables, e.g.: ${CLIENT_IP}",
    willRemoveFromRequest: "Will be removed from request",
    removeToggleTooltip:
      "Enable remove switch to delete this header, disable to add or override this header",
    addHeader: "Add Header",
    paramOverridesTooltip:
      "Define the API request parameters to be overridden using JSON format. These parameters will be merged with the original parameters when sending the request.",
    never: "Never",
    daysAgo: "{days} days ago",
    hoursAgo: "{hours} hours ago",
    minutesAgo: "{minutes} minutes ago",
    secondsAgo: "{seconds} seconds ago",
    justNow: "Just now",
    restoreKeys: "Restore Keys",
    confirmRestoreAllInvalid: "Are you sure to restore all invalid keys?",
    validatingKeysMsg: "Validating {type} keys...",
    confirmClear: "Confirm Clear",
    enterGroupNameToConfirm: "Enter group name to confirm",
    dangerousOperationWarning1: "This is a dangerous operation that will delete",
    dangerousOperationWarning2: "keys under this group. Please enter group name ",
    toConfirm: " to confirm.",
    incorrectGroupName: "Incorrect group name",
    clearAllKeysSuccess: "All keys cleared successfully",
    allStatus: "All Status",
    keyExactMatch: "Key exact match",
    searchByName: "Search by name...",
    noMatchingKeys: "No matching keys found",
    showHide: "Show/Hide",
    requests: "Requests",
    failures: "Failures",
    unused: "Unused",
    test: "Test",
    restore: "Restore",
    requestsShort: "RQ",
    failuresShort: "FL",
    testShort: "Go",
    restoreShort: "↻",
    validShort: "OK",
    invalidShort: "NG",
    testKey: "Test Key",
    totalRecords: "Total {total} records",
    recordsPerPage: "{count} per page",
    pageInfo: "Page {current} of {total}",
    importTaskStarted: "Key import task has started, please check the progress below later.",
    deleteTaskStarted: "Key delete task has started, please check the progress below later.",
    addKeysToGroup: "Add keys to {group}",
    deleteKeysFromGroup: "Delete keys from {group}",
    currentGroup: "current group",
    enterKeysPlaceholder: "Enter keys, one per line",
    enterKeysToDeletePlaceholder: "Enter keys to delete, one per line",
    group: "Group",
    notesUpdated: "Notes updated",
    editNotes: "Edit notes",
    notes: "Notes",
    editKeyNotes: "Edit key notes",
    enterNotes: "Enter notes...",
  },
  subGroups: {
    addSubGroup: "Add Sub Group",
    subGroup: "Sub Group",
    totalSubGroups: "Total {total} sub groups",
    sortedByWeight: "Sorted by weight descending",
    noSubGroups: "No sub groups",
    loadFailed: "Failed to load sub groups",
    removeSubGroup: "Remove Sub Group",
    confirmRemoveSubGroup: 'Are you sure to remove sub group "{name}" from aggregate group?',
    editWeight: "Edit Weight",
    weight: "Weight",
    remove: "Remove",
    viewGroupInfo: "View Group Information",
    viewSubGroup: "View Sub Group",
    statusActive: "Active",
    statusDisabled: "Disabled",
    statusUnavailable: "Unavailable",
  },
  logs: {
    title: "Logs",
    requestLogs: "Request Logs",
    systemLogs: "System Logs",
    errorLogs: "Error Logs",
    accessLogs: "Access Logs",
    loadFailed: "Failed to load logs",
    requestFailed: "Failed to load logs request",
    copiedToClipboard: "{type} copied to clipboard",
    copyFailed: "Failed to copy {type}",
    retryRequest: "Retry Request",
    finalRequest: "Final Request",
    time: "Time",
    requestType: "Request Type",
    responseType: "Response Type",
    stream: "Stream",
    nonStream: "Non-Stream",
    statusCode: "Status Code",
    duration: "Duration(ms)",
    model: "Model",
    sourceIP: "Source IP",
    groupName: "Group Name",
    parentGroup: "Aggregate Group",
    parentGroupName: "Aggregate Group Name",
    errorMessage: "Error Message",
    exportLogs: "Export Keys",
    totalRecords: "Total {total} records",
    recordsPerPage: "{count} per page",
    previousPage: "Previous",
    nextPage: "Next",
    pageInfo: "Page {current} of {total}",
    requestDetails: "Request Details",
    basicInfo: "Basic Info",
    key: "Key",
    group: "Group",
    requestId: "Request ID",
    requestTime: "Request Time",
    requestMethod: "Request Method",
    requestPath: "Request Path",
    requestBody: "Request Body",
    responseStatus: "Response Status",
    responseTime: "Response Time",
    responseBody: "Response Body",
    clientIp: "Client IP",
    userAgent: "User Agent",
    stackTrace: "Stack Trace",
    logLevel: "Log Level",
    logTime: "Log Time",
    logMessage: "Log Message",
    clearLogs: "Clear Logs",
    filterLogs: "Filter Logs",
    searchLogs: "Search Logs",
    noLogs: "No logs",
    showDetails: "Show Details",
    hideDetails: "Hide Details",
    requestInfo: "Request Information",
    upstreamAddress: "Upstream Address",
    requestContent: "Request Content",
    errorInfo: "Error Information",
    customColumns: "Custom Columns",
  },
  settings: {
    title: "Settings",
    general: "General",
    security: "Security",
    performance: "Performance",
    notification: "Notification",
    advanced: "Advanced",
    systemConfig: "System Configuration",
    appUrl: "App URL",
    loadFailed: "Failed to load settings",
    pleaseInput: "Please input {field}",
    minValueError: "Value cannot be less than {value}",
    inputNumber: "Please input number",
    inputContent: "Please input content",
    saveSettings: "Save Settings",
    saving: "Saving...",
    globalProxyKeys: "Global Proxy Keys",
    requestTimeout: "Request Timeout",
    connectTimeout: "Connect Timeout",
    maxRetries: "Max Retries",
    blacklistThreshold: "Blacklist Threshold",
    keyValidationInterval: "Key Validation Interval",
    logRetentionDays: "Log Retention Days",
    enableRequestLogging: "Enable Request Logging",
    enableErrorLogging: "Enable Error Logging",
    enableDebugMode: "Enable Debug Mode",
    proxyUrl: "Proxy Server URL",
    corsEnabled: "Enable CORS",
    allowedOrigins: "Allowed Origins",
    allowedMethods: "Allowed Methods",
    allowedHeaders: "Allowed Headers",
    resetSettings: "Reset Settings",
    importSettings: "Import Settings",
    exportSettings: "Export Settings",
    settingsSaved: "Settings saved",
    settingsReset: "Settings reset",
    confirmReset: "Confirm reset all settings?",
    dangerZone: "Danger Zone",
    clearAllData: "Clear All Data",
    confirmClearData: "This will delete all data and cannot be undone. Continue?",
  },
  footer: {
    checking: "Checking...",
    latestVersion: "Latest Version",
    updateAvailable: "Update Available",
    checkFailed: "Check Failed",
    docs: "Docs",
    officialDocs: "Official Documentation",
    viewSource: "View Source",
    feedback: "Feedback",
    reportIssue: "Report Issue",
    contributors: "Contributors",
    viewContributors: "View Contributors",
    joinGroup: "Join Group",
  },
  charts: {
    requestTrend24h: "24h Request Trend",
    allGroups: "All Groups",
  },
  security: {
    warningsWithHigh:
      "Found {count} security configuration issues, {highCount} need priority attention",
    warningsSuggestions: "Found {count} security configuration suggestions",
    important: "Important",
    suggestion: "Suggestion",
    tip: "Tip",
    configReminder: "Security Configuration Reminder",
    viewDetails: "View Details",
    configDocs: "Configuration Docs",
    dontRemind: "Don't Remind Again",
  },
  task: {
    processing: "Processing task...",
    completed: "Task completed.",
    hideProgress: "Hide progress",
    validatingKeys: "Validating keys for group [{groupName}]",
    importingKeys: "Importing keys to group [{groupName}]",
    deletingKeys: "Deleting keys from group [{groupName}]",
    validationCompleted:
      "Key validation completed, processed {total} keys, {valid} successful, {invalid} failed. Note: Failed validations do not immediately blacklist keys - failure count must reach threshold to blacklist.",
    importCompleted: "Key import completed, added {added} keys, ignored {ignored}.",
    deleteCompleted: "Key deletion completed, deleted {deleted} keys, ignored {ignored}.",
  },
  theme: {
    auto: "Auto Mode",
    light: "Light Mode",
    dark: "Dark Mode",
    current: "Current",
    clickToSwitch: "Click to switch to {mode}",
  },
  encryptionAlert: {
    title: "⚠️ Encryption Configuration Error",
    viewSolution: "View Solution",
    viewDocs: "View Documentation",
    scenario: {
      dataNotEncrypted: {
        step1: "Stop the service",
        step2: "Run key migration command:",
        step3: "Restart the service",
      },
      keyMismatch: {
        solution1Title: "Solution 1: Use the correct key (Recommended)",
        solution1Step1: "Configure the correct ENCRYPTION_KEY in .env file:",
        solution1Step2: "Restart the service",
        solution2Title: "Solution 2: Re-encrypt data (If you want to use the new key)",
        solution2Step1: "Stop the service",
        solution2Step2: "Run key migration to new key:",
        solution2Step3: "Update .env configuration to new key",
        solution2Step4: "Restart the service",
      },
      keyNotConfigured: {
        solution1Title: "Solution 1: Configure encryption key (Recommended)",
        solution1Step1: "Configure the same ENCRYPTION_KEY used for encryption in .env file:",
        solution1Step2: "Restart the service",
        solution2Title: "Solution 2: Decrypt data",
        solution2Step1: "Stop the service",
        solution2Step2: "Run decryption command:",
        solution2Step3: "Restart the service",
      },
    },
  },
};
